package main

import (
	"dashenwo.com/dashenwo/micro_srv/search_srv/configs"
	"dashenwo.com/dashenwo/micro_srv/search_srv/handler"
	"dashenwo.com/dashenwo/micro_srv/search_srv/registry"
	"github.com/micro/cli/v2"
	"github.com/micro/go-micro/v2"
)

func main() {
	// 创建meta信息
	md := make(map[string]string)
	md["chain"] = "gray"
	// 创建grpc服务
	srv:=micro.NewService(
		// 配置版本信息
		micro.Version("1.0"),
		// 配置服务名称
		micro.Name("com.dashenwo.srv.search"),
		// 配置服务端口
		micro.Address(":9091"),
		// 配置meta信息
		micro.Metadata(md),
		// 增加命令行参数
		micro.Flags(
			&cli.StringFlag{
				Name:  "conf_path",
				Value: "./conf/",
				Usage: "配置文件目录",
			},
		),
		// 解析配置文件
		micro.Action(func(ctx *cli.Context) error {
			confPath := ctx.String("conf_path")
			// 初始化配置信息
			err := configs.InitConfigs(confPath)
			return err
		}),
	)
	// 初始化服务
	srv.Init()
	// 创建容器注入
	ctn, err := registry.NewContainer()
	if err !=nil{
		panic(err)
	}
	// 暴露接口
	handler.Apply(srv.Server(),ctn)
	// 启动服务
	if err := srv.Run(); err != nil {
		panic("服务启动失败")
	}
}
